package com.linsen.erp.admin.provider.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @Description:
 * @ProjectName: erp
 * @Package: com.linsen.erp.admin.provider.vo
 * @ClassName: RoleVO
 * @Author: zhaoyong
 * @Email: zy765203718@gmail.com
 * @Date: 2023/7/27 11:28
 * @Version: 1.0
 */
@Data
@ApiModel("角色VO")
public class RoleVO implements Serializable {

    @ApiModelProperty("角色id")
    private String id;
    @ApiModelProperty("角色名称")
    private String name;
    @ApiModelProperty("唯一标识")
    private String code;
    @ApiModelProperty("数据权限类型：1，仅限个人；2，查看全部；3，仅限当前部门；4，当前部门及子部门；5，自定义范围")
    private Integer permissionType;
    @ApiModelProperty("优先级")
    private Integer priority;

    @ApiModelProperty("关联菜单列表")
    private List<MenuVO> menuVOList;
    @ApiModelProperty("关联菜单id列表")
    private List<String> menuIdList;

    /**
     * 数据权限
     * 部门范围使用部门树形结构进行多选
     * 用户范围使用用户分页列表（带查询条件）进行多选
     * 部门和用户勾选结果汇总后页面最右侧单独显示（和勾选页面进行联动勾选/取消勾选）
     */
    @ApiModelProperty("数据权限自定义范围id列表-部门")
    private List<String> roleDataScopeDeptIdList;
    @ApiModelProperty("数据权限自定义范围详情列表-部门")
    private List<DeptVO> roleDataScopeDeptVOList;
    @ApiModelProperty("数据权限自定义范围id列表-用户")
    private List<String> roleDataScopeUserIdList;
    @ApiModelProperty("数据权限自定义范围详情列表-用户")
    private List<UserVO> roleDataScopeUserVOList;

    @ApiModelProperty("创建操作人")
    private String createBy;
    @ApiModelProperty("创建操作人username")
    private String createByName;
    @ApiModelProperty("创建时间")
    private LocalDateTime createTime;
    @ApiModelProperty("更新操作人")
    private String updateBy;
    @ApiModelProperty("更新操作人username")
    private String updateByName;
    @ApiModelProperty("更新时间")
    private LocalDateTime updateTime;
}
